#include <iostream>
#include <gtest/gtest.h>  // 引入Google Test框架头文件

/*
 Google Test断言宏说明：
   - ASSERT_系列：断言失败则立即终止当前测试用例
   - EXPECT_系列：断言失败仍继续执行后续代码
 注意：所有断言宏必须包裹在TEST宏定义的测试函数中
*/

// 定义测试套件1：验证比较逻辑
// TEST宏参数说明：
//   - 第一个参数：测试套件名称（逻辑分组）
//   - 第二个参数：具体测试用例名称
TEST(test, less_than) 
{
    int age = 20;
    // 验证age是否小于18（实际20>18，断言将失败）
    // 使用EXPECT_LT失败不会终止测试，后续代码仍执行
    EXPECT_LT(age, 18);  // 20 < 18? 预期失败
    
    // 演示即使断言失败仍会执行的代码
    printf("OK! 此消息证明EXPECT断言失败后仍继续执行\n");  // 始终会输出
}

TEST(test, great_than) 
{
    int age = 20;
    // 验证age是否大于18（实际20>18，断言成功）
    EXPECT_GT(age, 18);  // 20 > 18? 预期成功
    printf("OK! 此消息在EXPECT断言成功后执行\n");  // 断言成功时输出
}

int main(int argc, char *argv[]) 
{
    // 初始化Google Test框架（解析命令行参数）
    testing::InitGoogleTest(&argc, argv);
    
    // 运行所有测试用例，返回0表示全部成功，否则有失败用例
    return RUN_ALL_TESTS();  
}
